﻿using Autofac.Extras.Quartz;
using Autofac;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;

namespace Wittur.GenereateKongCoCPDF.Core.Extensions
{
    public static class QuartzExtensions
    {
        public static ContainerBuilder ConfigureQuartz(this ContainerBuilder builder)
        {
            /**
             QuartzAutofacFactoryModule：这是 Quartz 提供的一个 Autofac 模块，用于将 Quartz 的调度器工厂与 Autofac 容器绑定。
             RegisterModule：这是 Autofac 的方法，用于注册模块。通过注册 QuartzAutofacFactoryModule，Autofac 会配置 Quartz 使用 Autofac 容器来解析任务实例。
             依赖注入：通过这种方式，Quartz 在调度任务时，可以自动注入任务类所需的依赖项（如服务、仓储等）。
             使用场
             */
            // 1) Register IScheduler
            builder.RegisterModule(new QuartzAutofacFactoryModule());
            // 2) Register jobs
            /// 通过这种方式，Quartz 作业可以使用 Autofac 容器中注册的服务，
            /// 从而实现依赖注入。例如，如果 MyJob1 依赖于某个服务，Autofac 会自动将该服务注入到 MyJob1 中。
            /// 不加这行，任务跑不起来
            builder.RegisterModule(new QuartzAutofacJobsModule(typeof(CoreAssemby).Assembly));

            return builder;
        }
    }
}
